トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     変数のスコープについて
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
渡辺 隆彦
Åê¹ÆNo.33639
投稿日時: 2007-6-8 4:26
半人前
居住地: 東京
投稿: 33
使用環境:
Arc:MacMini(1.5G PowerPC G4)
OS :MacOSX(10.4.8)
Appli:Flash Professional 8
変数のスコープについて
変数のスコープについてお聞きします.

いままでなにげにfor文を書くときに以下のような変数iの宣言を行っていました。
function A(){
for (var i:Number =0; i < 10; i++) { // 1つ目
............ 略 ...........
}
............ 略 ...........
for (var i:Number =0; i < 10; i++) { // 2つ目
............ 略 ...........
}
}

自分としては2つ目のfor文では変数iが再定義されるのかと思っていたのですが、
この間デバッグをしていて、ローカルのタブにて、1つ目のfor文終了後にも、
iが残っている事に気がつきました。

そうすると、2つ目のfor文では変数iを宣言なしで、
for ( i =0; i < 10; i++) { // 2つ目
のように記述すべきなのでしょうか?
それともコンパイル時にコンパイラが2つ目のiを認識して、使い回しを
してくれているのでしょうか?

どこでどう勘違いしていたのかお恥ずかしいのですが、よろしくお願いいたします.
野中文雄
Åê¹ÆNo.33640
投稿日時: 2007-6-8 5:50
ちょんまげら
居住地: 東京
投稿: 4247
使用環境:
CS4 .4.11 Vista Home Premium (SP1)
Re: 変数のスコープについて
ECMAScriptには、ブロックスコープがありません(JavaScript1.7では追加されているようです)。そのため、ひとつの関数内で、同名の変数を再度var宣言しても再定義にはなりません。

同じ変数を使い回す場合には、関数の冒頭で宣言しておくのが、誤解を防ぐためにはよさそうに思います。
function A(){
	var i:Number;
	for (i =0; i < 10; i++) { // 1つ目
		// ...[中略]...
	}
	// ...[中略]...
	for (i =0; i < 10; i++) { // 2つ目
		// ...[中略]...
	}
}

引用:
渡辺 隆彦さんは書きました:
変数のスコープについてお聞きします.

いままでなにげにfor文を書くときに以下のような変数iの宣言を行っていました。
function A(){
for (var i:Number =0; i < 10; i++) { // 1つ目
............ 略 ...........
}
............ 略 ...........
for (var i:Number =0; i < 10; i++) { // 2つ目
............ 略 ...........
}
}

自分としては2つ目のfor文では変数iが再定義されるのかと思っていたのですが、
この間デバッグをしていて、ローカルのタブにて、1つ目のfor文終了後にも、
iが残っている事に気がつきました。


----------------
 

渡辺 隆彦
Åê¹ÆNo.33642
投稿日時: 2007-6-8 12:07
半人前
居住地: 東京
投稿: 33
使用環境:
Arc:MacMini(1.5G PowerPC G4)
OS :MacOSX(10.4.8)
Appli:Flash Professional 8
Re: 変数のスコープについて
野中さんありがとうございます。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops